package com.junzhiit.nengji.shop.dao;

import java.util.List;

import com.bainaeco.framework.base.dao.BaseDAO;
import com.junzhiit.nengji.shop.bo.CouponsBO;
import com.junzhiit.nengji.shop.bo.UserCouponsBO;
import com.junzhiit.nengji.shop.bo.UserCouponsInfoBO;
import com.junzhiit.nengji.shop.model.UserCoupons;

public interface UserCouponsDAO extends BaseDAO<UserCoupons>{
	/**
	 * 根据用户ID查询该用户下的优惠券
	 * TODO
	 * @author Zaki
	 * @time 2018年3月17日 下午3:11:53
	 * @return List<UserCouponsBO>
	 */
	public List<UserCouponsBO> getCouponsByUserId(String userId);
	
	/**
	 * 给用户赠送优惠券时查询所有商家优惠券
	 * TODO
	 * @author Zaki
	 * @time 2018年3月17日 下午3:13:50
	 * @return List<UserCouponsBO>
	 */
	public List<UserCouponsBO> getCouponsAll(CouponsBO couponsBO, int pageNumber, int maxPageRow);
	
	/**
	 * 查询所有商户的优惠券数量
	 * TODO
	 * @author Zaki
	 * @time 2018年3月17日 下午5:18:59
	 * @return int
	 */
	public int getCouponsCount(CouponsBO couponsBO);
	
	/**
	 * 
	 * TODO 查询所有用户的所有优惠券
	 * @author Zaki
	 * @time 2018年4月18日 下午8:26:12
	 * @return List<UserCoupons>
	 */
	public List<UserCoupons> getCouponsById();
	
	/**
	 * TODO 根据用户ID跟商户ID(数组)查询所有可用的优惠劵
	 * @author DlamLiu
	 * @time 2018年6月28日 上午11:53:20
	 * @return List<UserCoupons>
	 * 
	 */
	public List<UserCouponsInfoBO> getCouponsByUserIdAndShopId(String userid,String findInShopIdSet,String findInChainIdSet);
	
	
	public List<UserCouponsInfoBO> getCouponsByShopId(String userid,String csId,Integer isChain);
	
	/**
	 * TODO 根据优惠劵ID查询用户优惠劵表中是否已经存在该优惠卷
	 * @author DlamLiu
	 * @time 2018年7月5日 上午11:16:10
	 * @return UserCoupons
	 * 
	 */
	public UserCoupons getUserCouponsByCouponsId(String userId,String couponsId);
	
	/**
	 * TODO 还原优惠劵
	 * @author DlamLiu
	 * @time 2018年7月18日 上午9:51:47
	 * @return boolean
	 * 
	 */
	public boolean updateUserCoupons(List<String> list);
	
	/**
	 * TODO 还原优惠劵
	 * @author DlamLiu
	 * @time 2018年7月18日 上午9:51:47
	 * @return boolean
	 * 
	 */
	public boolean updateUserCoupons(String ordersId);
	
	/**
	 * TODO  跟据优惠劵ID更新用户优惠劵状态
	 * @author Dlam
	 * @time 2018年7月18日 上午10:03:12
	 * @return boolean
	 * 
	 */
	public boolean updateUserCouponsStatus(String couponsId,Integer status);
	
	/**
	 * 
	 * TODO 根据用户id 和 优惠券id 和 订单编号查询
	 * @author PeterMo
	 * @time 2018年7月19日 下午3:08:06
	 * @return UserCoupons
	 */
	public UserCoupons getUserCoupons(String userId,String couponsId,String orderNumber);
}
